\documentclass[a4paper,10pt]{report}\input{../0.Préambule/Préambule_cours_prof}\input{0_Préambule_Repré1}\begin{document}

\newpage
\setcounter{chapter}{8}
\chapter{Représentation d'un texte en machine}

\section{Encodage ?}

Lors des premières transmissions d'information (télégraphe optique de Chappe en $1794$, télégraphe électrique de Cooke et Wheatstone en $1938$, ...), il a été nécessaire de définir un code pour représenter les différents symboles utilisés dans le langage courant (lettres, chiffres, ponctuations, …). Ce code peut être visuel (drapeaux, tour Chappe), codé à l'aide de plusieurs impulsions (code Morse), … C'est ce que l'on appelle \textbf{l'encodage}.

Un ordinateur utilisant un système binaire pour stocker, transmettre et utiliser les données, il a fallu choisir un moyen de représenter les différentes lettres et symboles à l'aide de $0$ et de $1$.
Un des premiers systèmes d'encodage binaire (sur $5$ bits) est du au français Emile Baudot en $1874$.

\section{Quelle représentation choisir ?}

Au début de l'automatisation des recensements (en 1890, machines fonctionnant à l'aide de cartes perforées) chaque machine/constructeur possédait son propre système d'encodage. Certains étaient liés à la structure matérielle du lecteur de cartes perforées par exemple (lecture purement mécanique) et il y avait incompatibilité entre les deux plus grands constructeurs de l'époque (Bull et IBM).

\medskip
Cette prolifération d'encodages possède plusieurs inconvénients :
\begin{enumerate}
\item[•] transfert de données difficile entre utilisateurs,
\item[•] changement d'appareil compliqué,
\item[•] obligé de redévelopper les programmes à chaque changement de gamme,
\item[•] ...
\end{enumerate}

\noindent Le besoin pour un encodage standardisé se fait ressentir.

\subsection{A.S.C.I.I.}

En $1963$, après un travail du Department of Defense des Etats-Unis d’Amérique, une première norme apparaît, c'est la naissance de l'encodage A.S.C.I.I. (American Standard Code for Information Interchange).

\noindent Elle définit un standard pour coder les caractères en binaire.

\medskip
\textbf{Nombres de bits utilisés :} $7$\quad soit $2^7 = 128$ symboles différents.

\medskip
\textbf{Symboles codables :} chiffres de $0$ à $9$ (indo-arabes), alphabet latin (majuscules et minuscules mais sans caractères spéciaux ou accentués), la ponctuation et caractères non imprimables (par exemple retour à la ligne).

\medskip
\textbf{Avantages :} prend peu de place en machine ($7$ bits par caractère) et est un standard supporté par quasiment toutes les machines/logiciels.

\medskip
\textbf{Inconvénients :}
\begin{enumerate}
\item[•] N'est pas adapté aux langues autres que l'anglais.
\item[•]Seulement $2^7$ possibilités.
\end{enumerate}

\subsection{ISO 8859-15}

La norme ISO-$8859-15$ (aussi appelée Latin-9) est une norme européenne qui apparaît en 1998. Elle concerne les pays suivants :
Canada, Allemagne, Royaume-Uni, Danemark, Espagne, Finlande, France, Italie, Pays-Bas, Norvège, Portugal et Suède (parmi d'autres pays européens).


\medskip
\textbf{Nombres de bits utilisés :} $8$ \quad soit $2^8 =256$	symboles différents.

\medskip
\textbf{Symboles codables :} tous ceux de la norme ASCII (en ajoutant un $0$ devant les $7$ bits du codage en ASCII) + tous les caractères spéciaux propres aux pays concernés (notamment les accents, le ç, …) et le symbole \euro.

\noindent Il existe d'autres normes ISO-$8859-?$ selon les pays concernés ($8859-9$ : turque, $8859-10$ : pays scandinaves, $8859-8$ : hébreu, ...).

\medskip
\textbf{Avantages :}
\begin{enumerate}
\item[•] bien adapté aux pays concernés,
\item[•] standard qui est compatible avec la norme ASCII.
\end{enumerate}

\medskip
\textbf{Inconvénients :}
\begin{enumerate}
\item[•]besoin d’autres normes pour d’autres pays (Japon, Chine, pays Arabes, …),
\item[•] pas forcément adapté aux moyens de communications modernes (smileys, …).
\end{enumerate}

\subsection{UTF-8}

L'encodage UTF-8 (Unicode Transformation Format) apparaît avec la norme ISO/CEI $10646$ de $1993$. Il est depuis devenu entièrement compatible avec la norme Unicode (qui a pour but depuis $1991$ d'offrir un encodage commun au monde entier, pour cela la norme Unicode nécessite $2^{21}$ nombres).

\medskip
\textbf{Nombres de bits utilisés :}	entre $1$ et $4$ octets	mais \og uniquement \fg{} 	$2^{21} = \np{2 097 152}$ symboles différents.

\medskip
\textbf{Symboles codables :} à peu près tous ceux dont on a eu besoin un jour !

\medskip
\textbf{Avantages :}
\begin{enumerate}
\item[•] universel : contient les symboles nécessaires pour la plupart des langues existantes,
\item[•] compatible avec la norme ASCII,
\item[•] compatible avec les symboles autres que les lettres : smileys, notes de musique, …
\end{enumerate}

\medskip
\textbf{Inconvénients :} prend plus de place que le code ASCII (logique pour coder davantage de choses) et est plus difficile à encoder/décoder (nombre de bits variable).

\medskip
\noindent C'est maintenant l'encodage le plus répandu sur internet (utilisé par environ $95 \%$ des sites internets en $2019$ : \href{https://w3techs.com/technologies/cross/character_encoding/ranking}{W3techs}).

\medskip
\textbf{Sources et liens :} \href{https://home.unicode.org/}{Unicode}, \href{https://fr.wikipedia.org/}{Wikipédia} et \href{https://www.iso.org/home.html}{ISO}

\bigskip
\noindent\textbf{Le défi du cours :}
Rechercher le principe du codage UTF-8 sur internet puis décoder le texte ci-dessous.

\medskip
\begin{center}
\begin{tabular}{ccccccc}
0101 0110 & 0110 1111 & 0110 1001 & 0110 1100 & 1100 0011 & 1010 0000 & 0010 0000\\ &&&&&&\\
0011 0001 & 1110 0010 & 1000 0010 & 1010 1100 & 0010 1100 & 0010 0000 & 0111 0101\\ &&&&&&\\
0110 1110 & 0010 0000 & 1111 0000 & 1001 1111 & 1001 1000 & 1000 0100 & 0010 0000\\ &&&&&&\\
0110 0101 & 0111 0100 & 0010 0000 & 0110 1101 & 1100 0011 & 1010 1010 & 0110 1101\\ &&&&&&\\
0110 0101 & 0010 0000 & 1111 0000 & 1001 1101 & 1000 0100 & 1001 1110 & 0010 0001\\
\end{tabular}
\end{center}

\end{document}